class Skill {
    constructor(id, name, description, type, cooldown) {
        this.id = id;                   // 技能ID
        this.name = name;               // 技能名称
        this.description = description; // 技能描述
        this.type = type;               // 技能类型（攻击、防御、治疗等）
        this.cooldown = cooldown;       // 冷却时间
        this.currentCooldown = 0;       // 当前冷却
    }

    // 技能效果计算
    calculate(source, target, params = {}) {
        throw new Error('需要在具体技能中实现calculate方法');
    }

    // 检查技能是否可用
    canUse(source) {
        return this.currentCooldown <= 0;
    }

    // 使用技能
    use(source, target, params = {}) {
        if (!this.canUse(source)) {
            return {
                success: false,
                message: '技能正在冷却中'
            };
        }

        const result = this.calculate(source, target, params);
        this.currentCooldown = this.cooldown;
        return result;
    }

    // 更新冷却时间
    updateCooldown() {
        if (this.currentCooldown > 0) {
            this.currentCooldown--;
        }
    }
}

// 技能类型枚举
const SkillType = {
    ATTACK: 'attack',
    DEFENSE: 'defense',
    HEAL: 'heal',
    BUFF: 'buff',
    DEBUFF: 'debuff'
};
